var a;
var b

var x, y,z2_
var t, u, i;

var n = 1;
var _a_ = x + 2
var b = c, y,c=tzu;
var u = inst instanceof Widget;

var a = true;
var x = false
var logic = a || x && y;;
var logic2 = a &c || x || z

var zz= e_ ? b : cvb, x = wer
var yy_ = a && b ? a && b : xx ? t || r : u & u12;

var xxx = z === 2.5;
var tz = a == null ? a : x != qwe
var test=a>b, teste2 = prop in obj
var test = a >= b ? x >>> 2 : nmm << zui /* whatever */

var a = a + b
var exp = a + b * c
var exp2 = a / b + x * y % zz;

var test = a + b > x ? a / b : zz || xx

var bool = !!value;
var bool = typeof a === whatever ? yes : no
var result = a > x ? ++a : ~z | u;
var comp = -a + +b
var n = typeof ++num;
var n2 = 0xff;

var nasty = ++a + b++

var emptyStr = ''
var emptyStr2 = ""
var str = "hello world\n"
var str2 = "hello" + ' ' + "world";

var f = function() {}
var fun = function(arg1, arg2) {
   var v = arg1 + arg2;
   var me = this
};

var widget = new Widget;
var obj = new Object();
var w = new Widget('id');
var widget = new Widget("id", true, (a + 3) * 2)

var doublea = a = 2;
var tripe = a = b = c

{
   var v1, v2;
   var v3 = v1 << v2 | ~v2
}

var arrEmpty = []
var single = ['qwerty'];
var single2 = [
               ++a
              ]
var arrSimple = [a, b, 123, true,  c, false, null]

var el = arrSimple[2];
var el = arrSimple[a + 1]
var el = arrSimple[a[a++]]
var el = arrSimple[2][1]
var el = arrSimple[2][arr[i]]
var el = arrSimple[(a + 3) * 4]

var emptyobj = {};
var emptyobj2 = {
}
var simpleobj = {name: "john"};

var simpleobj2 = {
   name: "john",
   age: 69,
   "retired": true,
   'irs' : 69 * 2 + 4 * (69 / 3),
   fun: function(id) {
      var o = {id: id};
   }
}

var prop = simpleObj.name;
var prop = obj.name.last;
var p = obj.names[1];
var p2 = obj[2].name;
var p3 = obj.names.lasts[a * (2 + c)][1]

var assigs = a -= (3 * obj.prop[2])

var nastyArray = [ 
                  a,
                  b,
                  a * b + b,
                  ++a,
                  { },
                  null,
                  {autoWidth: true, id: "stx_orderTree"}
                 ];

var nastyArray2 = [
                    ,
                    typeof whatever,
                    function(p1, p2) { var s = p1 + p2; },
                    [ {}  ],
                    [a,b,c * x, this, "hello", { 1: "one", 2: 'two', all: [1, 2] }],
                    "" + '',
                    true, false, null, a << 2,
                    arr[a + 3],
                    ,
                  ]

var nastyObj = { prop1: null,
                 "prop2": var1 << 2,
                 'prop3' : [1,2,3,4,5],
                 1000: "one thousand",
                 nested : {
                     name: "Desmond",
                     items: [ {a: 1, 
                               b: null, 
                               c: true, 
                               d: [ {ii: [ !!boolv, false ], z: ++a, x: 3.1415 * 2 } ]
                              }, 
                             345, 3.5, (a + b) * c, [], {f: function(arg1, arg2) { var s = arg1 || arg2; } } ]
                 },
                 type: typeof someObj,
                 widget: new Widget,
                 widget2: new Widget(),
                 widget3: new Widget("myid", { items: [ panel, buttons ], autoHeight: false }),
                 id: widget.id
};

var form = (x + 5) * (y / 4) % 4
var bool = (a >= 4) ? (x && y) : (a + 2) * 3;
var n = (
         3.1415
        );

var fcall = doSomething();
var fcall2 = doWhatever( )
var fcall = doSomething(a = 1);
var fcall = doSomething(a += b, obj.prop = 3, a[2]);
var fcall3 = doIt("id")
var fcall4 = doThat(123, "hello", 2 * a)
var fcall5 = doThis('myid', {
   prop1: varvalue1,
   items: [1, 2, 3],
   type: typeof widget,
   innerObj: { f: function(p1,p2,p3) { } }
});

var complexFcall = doSomething()();
var complexFcall = doSomething(1)();
var complexFcall = doSomething(p1, p2)([1, 2, 3]);

var complexFcall = doSomething(true, false)({a: 1, b: 2, c: 3}, true, null, [ [], {} ]);
var complexFcall = doSomething()[a++]

var complexFcall = doSomething(p1,p2).prop;
var complexFcall = doSomething([])(true)['prop']();

// tests regexp literals

var notRegexp = a / b
var notRegexp = a/b
var notRegexp = a/=b
var notRegexp = a /= b
var notRegexp = a++ / 2
var notRegexp = a++ /2
var notRegexp = a++/2
var notRegexp = a[index]/2
var notRegexp = a[index] /2
var notRegexp = a[index]/2
var notRegexp = a[index]/=2
var notRegexp = a[index]--/2
var notRegexp = (a[index]--)/2
var notRegexp = a/b/c/i;
var notRegexp = a--/x/y
var notRegexp = a-- /x/y
var notRegexp = (x + y/z)/w
var reg = / /;
var reg = / /
var reg = /^\d+$/
var reg = /^\d{1,3} \w? (a|b)*$/
var r = /^\d$/.exec("123")
var r = /^\w+ abc$/i.exec('invalid')
var r = validate('some string', /^\w\s*\w$/)
var regexp = /^\w[^0-9]{2,}$/ig;

var abc, qwerty = a === b && c !== d && x <= y, y1x2c
